package com.mashibing.class16;

import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;

// 宽度优先遍历
public class Code01_BFS {
    // 从node出发，进行宽度优先遍历
    public static void bfs(Node start) {
        if (start == null) {
            return;
        }
        Queue<Node> queue = new LinkedList<Node>();
        HashSet<Node> set = new HashSet<Node>();
        queue.add(start);
        set.add(start);
        while (!queue.isEmpty()) {
            Node cur = queue.poll(); // 每一个元素弹出 直接打印
            System.out.println(cur.value);
            // 遍历它的直接邻居.
            for (Node next : cur.nexts) {
                if (!set.contains(next)) { // 如果该邻居在该集合中没有, 则添加到集合和队列中.
                    set.add(next);
                    queue.add(next);
                }
            }

        }
    }
}
